from ecelery import easy_apply_async, easy_delay
import time

from tests_easy_celery.dir_a.dir_b.dir_c.celery_app_module import add, sub  # 主要是要导入一下有app的模块。

# 这里的sub和add不需要一定从 tests_easy_celery.dir_a.dir_b.dir_c.celery_app_module.py 导入，可以从原始定义模块导入。
# 但要确保在发布任务之前import 一下tests_easy_celery.dir_a.dir_b.dir_c.celery_app_module.py 这个模块（就是实例化了Celery类的模块），因为@shared_task装饰器是自动使用一个已存在celery实例，
# 如果代码运行从没有实例化一次Celery类，@shared_task就找不到celery app了，无法决定发布任务到哪里。

for i in range(1000):
    print(i)
    easy_apply_async(args=(i, i * 2), task_function=add, countdown=5)  # 具有强大的自动补全优势，可以补全提示20种常用的任务控制参数，celery原生不支持。
    add.apply_async(args=(i, i * 2))  # 你不想拥有代码自动补全提示的优势，也可以使用原来的方式来发布消息。
    easy_delay(i, y=2 * i, task_function=add)
    add.delay(i, i * 2)

    easy_apply_async(kwargs={'a': i, 'b': i * 2}, task_function=sub)

time.sleep(100000)
